const net = require('net');
function hexToBuffer(hexString) {
  // 移除空格和冒号等分隔符
  const cleanHex = hexString.replace(/[\s:]/g, '');

  // 验证 HEX 字符串长度是否合法
  if (cleanHex.length % 2 !== 0) {
    throw new Error('HEX 字符串长度必须是偶数');
  }

  // 创建 Buffer
  const buffer = Buffer.alloc(cleanHex.length / 2);

  // 填充 Buffer
  for (let i = 0; i < cleanHex.length; i += 2) {
    buffer[i / 2] = parseInt(cleanHex.substr(i, 2), 16);
  }

  return buffer;
}
// 创建 TCP 客户端
const client = net.createConnection(
  // { host: '106.15.50.50', port: 8080 },
  { host: '127.0.0.1', port: 8080 },
  () => {
    console.log('已连接到服务器');
    // 向服务器发送数据
    //      供电情况 环境氧气情况    水流量（脉冲值） 三相电状态   环境温湿度情况  备用电池电量百分比    网络信号强度值 短信报警开关情况   设备号
    //53 47 0800    0500D507       07D507          0301       022B33302E3164  8864               1610           0901           10 12312323 89860816162390059496 1101 120145
    // setInterval(() => {
    // console.log('已发送');
    const bufferData = hexToBuffer(
      '53470801050100000700000300022B30302E30998864161F0900100861192072879177898604E6192391410465110145',
    );
    client.write(bufferData);
    // console.log(`已发送数据 (HEX): ${hexData}`);
    console.log(`实际发送的字节: ${bufferData.toString('hex')}`);
    // client.write(
    //   '53470800050000000700000300022B30302E30998864161F0900101231232323232323898604E6192391410465110145',
    // );
    // }, 2000);
  },
);

// 接收服务器响应
client.on('data', (data) => {
  console.log(`收到服务器响应: ${data.toString()}`);
  // 关闭连接
  // client.end();
});

// 连接断开
client.on('end', () => {
  console.log('已与服务器断开连接');
});

// 错误处理;
client.on('error', (err) => {
  console.error('客户端错误:', err);
});

// const moment = require('moment');

// function getMinutesDiff(time) {
//   const targetTime = moment(time);
//   const currentTime = moment();
//   console.log(111, currentTime.diff(targetTime, 'minute'));
//   return;
//   const diffInMilliseconds = currentTime.getTime() - targetTime.getTime();
//   // 方案1：返回完整分钟数（舍去小数部分）
//   const diffInMinutes = Math.floor(diffInMilliseconds / (1000 * 60));

//   // 方案2：返回精确分钟数（保留小数）
//   // const diffInMinutes = diffInMilliseconds / (1000 * 60);

//   return diffInMinutes;
// }

// console.log(getMinutesDiff('2025-06-18 11:24:50'));
